Disciplina: Estudos Ecológicos - Introdução aos Métodos de Análises Temporais e Espaciais (ENSP.82.134.2)
Carga Horaria: 90 horas (10 aulas) - 3 Créditos
Professor: Oswaldo G Cruz
Monitores:
Denis de Oliveira Rodrigues
João Morais
Período: 11 de Maio de 2023 a 13 de Outubro 2023
Ementa:
Este curso se propõe a estudar métodos de séries temporais e estatística espacial, visando analisar a saúde de grupos populacionais a partir de sua localização temporal e espacial, bem como sua interação com o ambiente. Serão abordados os seguintes tópicos: Introdução e definições de estudos ecológicos; falácia ecológica vs falácia atomista; introdução, definições e importância das sereis temporais; tendência e sazonalidade; autocorrelação serial; filtros e alisamentos; modelo Box & Jenkings (ARIMA); Tipologia dos dados espaciais; Padrão de pontos; Área; Geoestatística. Modelos aditivos generalizados (GAM). O curso terá aulas práticas realizadas em R.
Cronograma
Avaliação:
Instruções para o Trabalho Final Prazo final: 30/11/2023
Clique AQUI para instruções
São estudos nos quais a unidade de análise (ou agregação) é uma população ou um grupo de pessoas, geralmente de uma área geográfica definida (ex: um país, um estado, uma cidade, etc.), em um determinado tempo definido.
Definição Clássica: é um estudo observacional com a informação obtida e analisada no nível agregado.
Geralmente são mais baratos e mais rápidos do que estudos envolvendo o indivíduo como unidade de análise.
Procuram avaliar como os contextos (sociais, ambientais, etc) podem afetar a saúde de grupos populacionais.
Gerar hipóteses etiológicas;
Testar hipóteses etiológicas;
Avaliar a efetividade de intervenções na população;
Identificar áreas de risco.
Exemplo 1: Em 1960, Friedman mostrou uma correlação positiva entre as taxas de mortalidade por doença coronariana (DC) e as vendas de cigarros per capita, em 44 estados americanos.
Figura: Coronary heart disease mortality rates in the United States per capita cigarette sales in 1960, by state. (From FRIEDMAN GD, Cigarette smoking and geographic variation in coronary heart disease mortality in the United States. J. Chronic Dis. 20: 769, 1967)
Medidas Agregadas: Medidas agregadas por grupos. ex: incidência, prevalência, mortalidade, proporção de fumantes;
Medidas Ambientais: Características físicas do contexto onde o grupo convive. ex: nível de poluição, precipitação;
Medidas Globais: Atributos de grupos, organizações ou lugares, que não podem ser mensurados a nível individual. ex: IDH, densidade demográfica, existência de um tipo de sistema de saúde.
Em uma análise ecológica, todas as variáveis são medidas agrupadas. Apenas se conhece a distribuição marginal de cada variável.
| Desfecho (Y) | |||
|---|---|---|---|
| Fator em Estudo (X) | Ocorreu | Não ocorreu | Total |
| Exposto | ? | ? | \(E_1\) |
| Não Exposto | ? | ? | \(E_0\) |
| Total | \(D_1\) | \(D_0\) | n |
Múltiplos Grupos: O objetivo desse tipo de estudo é a comparação entre todos os grupos ou conjuntos populacionais envolvidos no estudo. Ex: Análise Espacial.
Desenhos de Séries Temporais: Avalia um determinado desfecho ao longo do tempo em uma determinada população geograficamente definida. Ex: Análise de Séries Temporais.
Desenhos Mistos: É a combinação entre os dois desenhos citados, pois avalia a evolução de um determinado desfecho em diferentes grupos populacionais ao longo do tempo. Ex: Análise Espaço-Temporais, Estudos Multiníveis.
(Rothman, Kenneth J. et al. Modern epidemiology. Philadelphia: Wolters Kluwer Health/Lippincott Williams & Wilkins, 2008.)
(Susser, Am.J.Public Health, 1994;84:825-835)
A Epidemiologia é frequentemente definida em termos do estudo da determinação da distribuição da doença. Mas não se deve esquecer que quanto mais espalhada é uma causa particular, menos ela contribui para explicar a distribuição da doença.”
“…dois tipos de perguntas etiológicas. A primeira busca as causas dos casos, e a segunda as causas da incidência.”
“Aplicada à etiologia, a visão centralizada no indivíduo leva ao uso do risco-relativo como a representação básica da força etiológica: ou seja, o risco em indivíduos expostos relativo aos não-expostos. […] Esta pode ser geralmente a melhor medida de força etiológica, mas não é medida de […] importância em saúde pública.”
“É rara a doença cuja taxa de incidência não tenha variado largamente, seja ao longo do tempo ou entre populações […] Isto significa que as causas da incidência, desconhecidas que sejam, não são inevitáveis. […] Mas identificar o agente causal pelos métodos tradicionais de caso-controle e coorte não terá sucesso se não houver suficientes diferenças na exposição dentro da população […] Nestas circunstâncias tudo os que os métodos tradicionais fazem é encontrar marcadores de susceptibilidade individual. A chave deve ser buscada nas diferenças entre populações ou em mudanças nas populações ao longo do tempo.”
(Rose G. Sick individuals and sick populations. Int J Epidemiol. 2001 Jun;30(3):427-32; discussion 433-4.)
(Evans,R.G.”Why are some people healthy and others not”)
(Diez-Roux AV. Bringing context back into epidemiology: variables and fallacies in multilevel analysis. AJPH,1998;88(2):216-22)
(Pickett KE, PearlL M. Multilevel analyses of neighbourhood socioeconomic context and health outcomes: a critical review. J Epidemiol Community Health 2001;55(2):111-22)
Tirando-se a média para cada grupo iremos obter quatro pontos sob os quais faremos uma regressão. O coeficiente de correlação obtido é rho = 0,9938
“Viés que pode ocorrer porque uma associação entre duas variáveis no nível agregado não necessariamente representa uma associação no nível individual”
O problema é que não podemos fazer inferências para níveis distintos:
Inferir para o indivíduos a partir de dados agregados (falácia ecológica)
Inferir para agregados populacionais a partir de dados individuais (falácia atomística ou individualista)
Na estatística esse efeito é conhecido como Paradoxo de Simpson
“Textos de Epidemiologia fazem uma avaliação consistente sobre estudos ecológicos: eles são tentativas cruas de estimar correlações em nível individual. […] Examinar esta questão de uma perspectiva diferente - como um problema geral de validade - mostrará que a falácia ecológica, conforme frequentemente usada, encoraja três noções interrelacionadas e falaciosas:
que modelos em nível individual são mais perfeitamente especificados que os de nível ecológico,
que correlações ecológicas são sempre substitutos para correlações de nível individual, e
que variáveis de nível de grupo não causam doença.”
(Schwartz, Am.J.Public Health, 1994;84:819-824)
Religião e Sucídio
Um exemplo clássico de estudo ecológico:
Emile Durkheim (em 1897) associação ecológica positiva entre a proporção de indivíduos de religião Protestante e as taxas de suicídio (províncias da Prússia);
Durkheim concluiu que Protestantes tinham maior probabilidade de se suicidarem do que os Católicos;
Conclusão factível mas a inferência causal não é correta: poderiam ter sido os Católicos em províncias predominantemente Protestantes a cometer os suicídios, e a metodologia ecológica não permite discernir qual das duas hipóteses está certa.
Para ler mais sobre este exemplo: Frans van Poppel and Lincoln H. Day. A Test of Durkheim’s Theory of Suicide - Without Committing the “Ecological Fallacy”. American Sociological Review, 1996. https://doi.org/10.2307/2096361
Posse de armas de fogo e suicídio
Um exemplo mais recente:
Figura. Relação entre posse doméstica de armas de fogo e mortalidade por suicídio nos Estados Unidos, por estado, A) por armas de fogo, B) por outros meios que não armas de fogo, e C) todos. (Fonte: Miller et al. Am J Epidemiol. 2013;178(6):946–955)
Um outro exemplo: Um pesquisador deseja estudar a relação entre acidentes de trânsito e a renda em três cidade distintas (A, B e C).
| pop | renda_media | tx_acidente |
|---|---|---|
| A | 24.08571 | 57.14 |
| B | 22.57143 | 42.86 |
| C | 21.41429 | 28.57 |
Dessa forma observamos que os indivíduos que sofreram algum tipo de acidente de trânsito, apresentam a menor renda;
Qual dos dois níveis de inferência está errado ?
Qual é, então, o problema ? ? ?
1. Numerador:
2. Denominador:
3.Exposição:
4. Análise:
Baixo custo e execução rápida, devido às fontes de dados secundários disponíveis;
Conseguem estimar bem os efeitos de uma exposição quando ela varia pouco na área de estudo, pela comparação entre áreas (os estudos individuais não conseguem);
Existem efeitos que somente podem ser medidos no nível ecológico, por ex. implantação de um novo sistema de saúde.
Informações sobre comportamento, atitudes e história clínica não estão disponíveis (dados pessoais não disponíveis);
Depende da qualidade das informações disponíveis (fontes diversas);
Não se leva em conta a variabilidade da característica estudada dentro do grupo;
Difícil estabelecer temporalidade entre causa e efeito.
Migração entre grupos (por exemplo, mora em uma área e trabalha em outra).
Resgatando a ecologia: estudo das complexas inter-relações entre organismos vivos e o seu meio físico.
Dados agregados – estudo ecológico clássico
Mistura de dados individuais e agregados – modelos multinível
Quando se estuda o tempo – séries temporais e modelos dinâmicos
Quando é espacial – modelos clássicos de regressão ou espaciais
Mistura espaço e tempo – modelos espaço-temporais
Envolvendo relações entre indivíduos – redes
As estatísticas internacionais indicam que o Chile tem uma das mais altas taxas de mortalidade por câncer de estômago. O país caracteriza-se por conter altos níveis de nitrato em seu solo, situação rara no mundo, neste particular. Estabeleceu-se a suspeita de ser o nitrato, em altas concentrações, um agente causal da neoplasia. Comparações regionais dentro do país, contrastando áreas com altas e baixas concentrações de nitrato, mostraram a mesma relação: alto teor da substância no solo, (alta mortalidade por este tipo de neoplasia). Um estudo caso-controle subseqüente foi realizado, mas a nível individual, não foi possível encontrar tal associação. A hipótese, entretanto, não foi totalmente descartada. Qual a importância desse estudo ecológico no estudo sobre causalidade: concentração de nitrato no solo vs câncer de estômago ?
Os casos notificados de Influenza são maiores na cidade A do que na cidade B. As taxas de vacinação para a influenza são mais baixas na cidade A do que na cidade B. Quais das seguintes razões são razões pelas quais seria é incorreto presumir que uma maior vacinação na cidade B é o que está fazendo com que a cidade B tenha menos casos relatados de Influenza ? Escolha as opções corretas.
A cidade A e a cidade B podem ter diferentes cepas de Influenza
A cidade A e a cidade B podem ter proporções diferentes de pessoas nas suas populações que são especialmente vulneráveis à influenza (por exemplo, idosos, crianças e mulheres grávidas)
A cidade A e a cidade B podem ter diferenças nos cuidados de saúde , acessibilidade aos serviços e acesso a diagnóstico da influenza
A cidade A e a cidade B podem ter climas diferentes, levando a diferenças em como/onde as pessoas entram em contato com um ao outro. Isto pode afetar as taxas de transmissão de Influenza
BERKMAN, Lisa F.; KAWACHI, Ichirō; GLYMOUR, M. Maria (Ed.). Social epidemiology. Oxford University Press, 2014.
DIEZ-ROUX, Ana V. Bringing context back into epidemiology: variables and fallacies in multilevel analysis. American journal of public health, v. 88, n. 2, p. 216-222, 1998.
EVANS, Robert G.; BARER, Morris L.; MARMOR, Theodore R. (Ed.). Why are some people healthy and others not?: The determinants of the health of populations. Transaction Publishers, 1994.
MORGENSTERN, Hal. Ecologic studies in epidemiology: concepts, principles, and methods. Annual review of public health, v. 16, n. 1, p. 61-81, 1995.
PICKETT, Kate E.; PEARL, Michelle. Multilevel analyses of neighbourhood socioeconomic context and health outcomes: a critical review. Journal of Epidemiology & Community Health, v. 55, n. 2, p. 111-122, 2001.
ROSE, Geoffrey. Sick individuals and sick populations. International journal of epidemiology, v. 30, n. 3, p. 427-432, 2001.
Definição: Entende-se por Séries Temporais (ST) todo e qualquer conjunto de dados (absolutos ou relativos, discretos ou contínuos), ordenados cronologicamente.
Condição: Esses dados seguem uma ordenação em função do tempo (dependência temporal).
De modo geral, as séries temporais apresentam sequências de observações relativas a determinada variável ao longo de um intervalo específico de tempo (dia, mês, trimestre, ano, etc.), isto é, referem-se a fluxos de valores periódicos, os quais dão uma visão geral sobre o andamento ou comportamento da variável em análise.
A maneira mais comum de visualizar séries temporais é usar um gráfico de linhas simples, em que o eixo horizontal representa os incrementos de tempo e o eixo vertical representa a variável que está sendo medida.
Seguem abaixo alguns exemplo de séries temporais:
As séries temporais podem ser de natureza regular ou irregular.
As séries temporais regulares ou uniformes são aquelas que podem ser expressas sempre com o mesmo intervalo de tempo (frequência).
As séries temporais irregulares ou não uniformes são aquelas em que as frequências de tempo são diferentes ou que apresentam dados ausentes (missing data). Algumas vezes podem ser transformadas em séries regulares agregando ouinterpolando os dados mensurados.
Há um sistema causal relacionando as variáveis no tempo;
Ao longo do tempo, o sistema influencia todos os dados sob análise, de modo regular e permanente;
Os dados históricos refletem a influência média de um conjunto de fatores.
Tais hipóteses se baseiam no pressuposto de que as relações apontadas pela experiência pregressa permitem prever o possível comportamento das variáveis sob análise, determinando se seu comportamento apresenta propriedades determinísticas e/ou aleatórias.
Contínuas: A informação é obtida em qualquer intervalo de tempo (podendo ser discretizando em intervalos iguais) ou é acumulada por período. Ex: Temperatura, pluviosidade, partículas em suspensão.
Discretas: Observações obtidas em intervalos de tempo discreto e equidistantes (ano, mês, dias, semanas epidemiológicas). Ex: Mortalidade infantil, notificações por DIC.
Multivariada: São várias coleções de observações para a mesma sequência de períodos de tempo, ou seja,envolvem mais de uma série histórica. Ex: Número de homicídios e acidentes no Sudeste.
Multidimensional: São várias coleções de observações para a mesma sequência de períodos de tempo, descrevendo o mesmo fenômeno em diferentes contextos. Ex: Número de AVCs em diversas UFs.
Um processo estocástico pode ser pensado de duas formas:
um conjunto de possíveis trajetórias de um fenômeno físico que poderiam ser observadas;
um conjunto de variáveis aleatórias, uma para cada tempo \(t\).
Cada valor observado de uma trajetória é um dos possíveis valores que poderiam ter sido observados, de acordo com a distribuição de probabilidades da respectiva variável aleatória.
Definir séries temporais consiste em determinar as funções matemáticas que apontam suas componentes básicas e permitem prever a evolução dos fenômenos estudados (como um eventual crescimento ou decrescimento futuro).
As séries temporais podem ser matematicamente representadas por funções do tipo:
\[Z_t = f(tempo, a)\]
Sendo \(Z_t\) o valor da variável \(Z\) no tempo \(t\), e \(a\) a componente aleatória associada à função matemática do tempo.
Matematicamente, uma série temporal discreta é representada por: \(Z_t = (Z_1 , Z_2 , Z_3 , ... , Z_n)\), sendo: \(Z\), a variável observável e \(t = 1,2,...,n\), o parâmetro do tempo.
Simulando duas séries temporais de um evento, com a mesma estrutura:
| Objetivo | Exemplo |
|---|---|
| Descrição: verificar existência de tendência, sazonalidade, ciclos. Histogramas, boxplots, são ferramentas da análise exploratória descritiva | Identificar tendência da AIDS; sazonalidade da dengue visando estabelecer melhor período de intervenção. |
| Estabelecimento de causalidade: estudo da relação de causa-efeito | Vacina X sarampo; Mortalidade por DIC X melhor assistência |
| Classificação: identificação de padrões | A série de leishmaniose tegumentar é “igual” à visceral? |
| Controle: sistemas dinâmicos, caracterizados por uma entrada \(X_t\), uma série de saída \(Z_t\) e uma função de transferência \(V_t\) | Modelar a resposta a medidas de controle de epidemia |
| Monitoramento (nowcast): Detectar variações no comportamento da séries temporais conforme elas ocorram | Dosagem de Hormônios ou de sinais vitais em CTI |
| Predição (forecast) : prever o comportamento futuro de uma serie | Predição de epidemias |
| Atualização (nowcast): predição sobre o presente | corrigir atraso de notificações |
Na prática, a maioria das séries que encontramos apresentam algum tipo de não estacionariedade, como por exemplo, tendência.
O modelo mais simples de uma séries temporal estacionária pode ser representado por:
\[Z_t = \mu + a_t\]
Sendo \(\mu\) a média do processo temporal e \(a_t\) a componente aleatória, chama de Ruído Branco em análises de séries temporais.
A estacionariedade da séries temporais pode ser:
1\(^a\) ordem - média constante ao longo de todo o período
2\(^a\) ordem - variância constante ao longo de todo o período
\[\gamma_h = E{\{[Z_t - E(Z_t)][Z_{t-h} - E(Z_{t-h})]\}}\]
A covariância não depende do tempo, mas da distância entre as observações.
Um processo é considerado fracamente estacionário se:
\(E(Z_t)=\mu\), \(\forall t\) (constante)
\(var(Z_t) = \sigma^2\), \(\forall t\) (constante)
\(Cov(Z_t, Z_{t-h}) = \gamma_h\), \(\forall t\) (não depende do instante no tempo, apenas da distância h)
Sendo o ruído branco (White Noise), também chamado de Processo Puramente Randômico, uma variável aleatória \(a_t\), com média zero e variância \(\sigma²_a\):
\(a_t \sim N(0, \sigma^2_a)\)
\(Cov(a_t, a_{t-h}) = 0\), \(\forall h \neq 0\) (Não correlacionados)
A maioria das técnicas estatísticas utilizadas em séries temporais supõe que estas sejam estacionárias. Caso a série temporal não seja estacionária, será necessário transformar os dados.
A transformação mais comum consiste em tomar diferenças sucessivas da série original, até se obter uma série estacionária.
A primeira diferença de \(Z_t\):
\[\bigtriangledown Z_t = Z_t - Z_{t-1}\]
A segunda diferença de \(Z_t\):
\[\bigtriangledown^{2} Z_t = \bigtriangledown[\Delta Z_t] = \bigtriangledown[Z_t - Z_{t-1}]\]
A n-ésima diferença de \(Z_t\):
\[\bigtriangledown^{n} Z_t = \bigtriangledown[\bigtriangledown^{n-1} Z_t]\]
Logaritmo dos dados - Estabilizar a variância
\[\bigtriangledown log Z_t = log Z_t - log Z_{t-1}\]
Transformações Box-Cox
Pode-se diferenciar tantas vezes quanto necessário até estabilizar (porém, em geral se diferencia apenas uma vez, raramente duas vezes).
Como saber se um processo é estacionário ?
Visualizando a série, aplicando a decomposição, boxplots, etc.
Testes Estatísticos, ex: Dickey-Fuller
Os métodos usuais de análise estatística de dados têm como pressuposto básico a independência dos eventos (casos). Ou seja, a ocorrência de um caso de doença em uma dada pessoa seria independente da ocorrência em outra pessoa.
Pressupostos básicos para uma análise de regressão:
\(E(e_i) = 0\)
Variância \(\sigma^2\) constante (homocedasticidade);
\(e_i \sim N(0, \sigma^2)\)
\(e_i \neq e_j\), são independentes
Na análise da incidência de doenças (ou qualquer outro indicador ecológico) ao longo do tempo isso não é verdade: a incidência em um determinado dia/mês ou ano em geral é correlacionada com a ocorrência no dia/mês/ano anterior.
Esta correlação é expressa em uma função denominada função de autocorrelação.
Quanto à dependência, séries temporais podem possuir:
Independência (sem dependência serial): série puramente aleatória ou ruído branco;
Memória longa: a dependência desaparece lentamente (os valores de pontos no passado influenciam momentos muito adiante no tempo - exemplo: doenças com grande latência como hanseníase);
Memória curta: dependência desaparece rapidamente (doenças de alta infecciosidade e “explosivas”” - exemplo: influenza).
O coeficiente de correlação entre \(Z_{t}\) e \(Z_{t-h}\) é chamado de autocorrelação de h-ésima ordem e é denotadado por:
\[ {\rho}_{k}=\frac {Cov\left({Z}_{t},{Z}_{t-h} \right)}{\sqrt{Var\left({Z}_{t},{Z}_{t-h} \right)}} =\frac{Cov\left({Z}_{t},{Z}_{t-h} \right)}{Var\left({Z}_{t} \right)} =\frac{{\gamma}_{k}}{{\gamma}_{0}} \]
Temos então:
\({\rho}_{0}=1\)
\(-1\leq {\rho}_{l} \leq 1\)
Um conjunto de autocorrelações, \(\left\{\rho_{h}\right\}\), é chamado de função de autocorrelação de \(Z_{t}\). Para uma dada amostra, \(\left\{Z_{t}\right\}_{t=1}^{T}\), suponha que \(\overline{Z}\) é a média amostral. Então, a autocorrelação amostral de primeira ordem de \(Z_{t}\) pode ser definida como:
\[ {\hat{\rho}}_{1}=\frac{\sum _{t=2}^{T}{\left({Z}_{t}-\overline{Z}\right) \left({Z}_{t-1}-\overline{Z}\right)}}{\sum_{t=1}^{T}{{\left({Z}_{t}-\overline{Z}\right)}^{2}}} \]
que é um estimador consistente de \({\rho}_{1}\). Em geral, a autocorrelação amostral de h-ésima ordem de \(Z_{t}\) pode ser definida como:
\[ {\hat{\rho}}_{h}=\frac{\sum_{t=h+1}^{T}{\left({Z}_{t}-\overline{Z}\right) \left({Z}_{t-h}-\overline{Z} \right)}}{\sum_{t=1}^{T}{{\left({Z}_{t}-\overline{Z}\right)}^{2}}} \] para \(0\leq h \leq T-1\).
Por exemplo, suponha que você está avaliando uma série temporal qualquer e quer visualizar como as defasagens da série podem impactar seu valor atual (ou seja, se \(Z_{t}\) é relacionado com \(Z_{t-h}\) para \(k\ge1\)). A função de autocorrelação pode ser usada para obter tal informação.
Num primeiro momento, visualize os dados da série para 10 lags (defasagens). Observe que os lags se tornam novas colunas e na medida que elas aumentam, incrementa-se as linhas sem observações.
Apesar da simples correlação entre os dados nos ajudar a identificar defasagens que poderíam contribuir para o comportamento da série em \(t\), precisamos fazer uso de testes estatísticos que verifiquem a significância da relação entre o valor atual e suas lags. Neste sentido, a função de autocorrelação tem grande importância.
Abaixo, um exemplo de função de autocorrelação. Observe que há duas linhas horizontais que representam os limites do teste de significância sendo que valores acima ou abaixo da linha são estatisticamente significantes. Neste documento, apresentaremos o teste que é realizado.
Para um dado \(h\), os resultados da Função de Autocorrelação podem ser testados usando um teste que pode ser representado pelas seguintes hipóteses:
\[ \begin{aligned} && H_{0}: \rho_{h}=0 \\ && H_{1}: \rho_{h}\neq 0 \end{aligned} \]
São elas:
Componentes Sistemáticas (podem ou não estar presentes)
Tendência
Sazonalidade
Ciclo
Componentes Não Sistemáticas
As análises exploratórias de séries temporais buscam isolar e interpretar as componentes. Tais componentes podem atuar de maneira isolada ou inter-relacionadas.
É a indicadora da direção global dos dados (ou movimento geral da variável), do percurso traçado e de sua linha contínua;
É o efeito de longo prazo na média. Pode ser o aumento ou redução a longo prazo…
São ciclos de curto prazo (não maiores que um ano), em torno da tendência;
Costumam se referir a eventos ligados a estação do ano, vinculados ao calendário e geralmente repetidos a cada doze meses;
Efeitos ligados à variações periódicas (semanal, mensal, anual, etc.);
Padrões que ocorrem em intervalos fixos.
Ex: Medidas de Temperatura (aumenta no verão e diminui no inverno).
Os ciclos são oscilações (aproximadamente regulares) em torno da tendência. Podem dever-se a fenômenos naturais, socioculturais ou econômicos, como variações climáticas (ex: excesso ou falta de chuva pode produzir ciclos agrícolas)
Variações que apesar de periódicas não são associadas automaticamente a nenhuma medida do calendário;
Aumento ou redução de frequência sem intervalos fixos.
Ex: Ciclos Econômicos e Ciclos de epidemias.
A diferença entre os ciclos, propriamente ditos, e a sazonalidade é o período de avaliação (curto e longo);
A semelhança é que ambos definem oscilações relativamente regulares em torno da tendência.
Na área de saúde é pouco comum encontrarmos ciclos, ainda que possam existir.
Visualmente
Conceitualmente, a componente aleatória é uma mistura de pertubações bruscas, irregulares e esporádicas nos movimentos das séries que tipificam os fenômenos. Na realidade é resultante dos efeitos de múltiplas causas que dificilmente/não conseguem ser previstos.
Exemplos típicos de eventos aleatórios:
\[Z_t = T_t + S_t + a_t\]
sendo \(t = 1,2, ..., N\)
\[Z_t = T_t . S_t . a_t\]
\[log(Z_t) = log(T_t . S_t . a_t) = log(T_t) + log(S_t) + log(a_t)\]
Na biblioteca ts a função mais utilizada tem o mesmo
nome ts , não é necessário chamar library(ts)
pois a mesma já se encontra carregada por default.
A função ts tem como argumentos principais:
data: um vetor, data.frame ou matriz com dados para a série
start: tempo da primeira observação e/ou end: tempo da última observação
frequency: quantidade de observações por unidade de tempo, podendo representar: Anual = 1, Trimestral = 4, Mensal = 12 e Semanal = 52
Vamos simular uma série usando a função rnorm para gerar
60 pontos aleatórios , com media 0 e desvio 1 em seguida vamos usar a
função ts para transformar o vetor em uma objeto
ts e finalmente fazer um gráfico.
# Uma serie temporal normalmente distribuída
serie <- rnorm(60)
# usando a função ts para criar um objeto da classe ts
# pode-se usar também end=c(2016,12) mas basta um!
serie.ts <- ts(serie,start = c(2012,1), frequency=12)
Vamos observar agora como é um objeto do tipo ts
serie.ts
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012 -0.850789274 1.098551160 -1.206355025 0.581862276 0.863689895 0.983052004 -1.271260251 -0.001062756 -0.960910158 1.259209306 -0.866606890 0.249044190
2013 -0.086168223 -0.492884341 -0.268998914 -0.399240236 -0.944297510 1.013188332 -0.408704068 -0.181086790 1.183755855 -1.608494491 -2.272439862 -2.040607916
2014 -0.648006354 0.717722237 -0.103400012 0.327017362 -0.977597331 0.341442983 0.043822392 -1.021578363 0.793427719 0.501624458 -1.554470354 0.883497837
2015 -0.207767801 1.831374014 0.177264382 -0.805840648 1.947932470 0.121197052 -0.354949127 1.052866250 1.163113962 -0.798832818 0.775455294 -1.995007352
2016 -0.350562193 0.380864742 0.258213780 0.964510263 -0.491278153 0.081638756 -0.161770723 1.272817069 -0.720269271 1.541051559 0.853661550 0.802399491
Para se obter o gráfico basta usar a função plot
# gráfico da série
plot(serie.ts)
Vamos usar agora um exemplo de casos caxumba em Nova York de 1928-1972 proveniente do livro:
Yorke, J.A. and London, W.P. (1973) “Recurrent Outbreaks of Measles, Chickenpox and Mumps”, American Journal of Epidemiology, Vol. 98, pp.469
Observe que a partir de um dado puramente vetorial já podemos obter um objeto ts
Clique aqui para ver como são os dados brutos
Para ler os dados utilizaremos a função scan que importa
dados vetoriais. Nesse exemplo estaremos usando os dados diretos de uma
URL mas o dado poderia
estar no seu disco, assim você importaria localmente!
OBSERVAÇÃO:
No MS-Windows existe algum problema ao acessar sites seguros (HTTPS)
assim vamos definir uma função que permita o acesso a esse tipo de site.
podemos tentar duas coisas:
options(url.method="libcurl")
Ou criar uma função:
scan.win <- function(x) {scan(url(x,method = 'libcurl'))}
No Windows 10 aparentemente não é necessário o procedimento acima mas fique atento que ao longo do curso estaremos importando dados com frequência. Descubra como fazer essa importação funcionar no seu computador!
Exemplo com dados de Caxumba, não se esqueça de definir a função acima!
dados <- scan('https://raw.githubusercontent.com/ogcruz/dados_eco_2023/main/exemplos/caxumba.dat')
caxumba <- ts(dados,start = c(1928,1),frequency = 12)
plot(caxumba)
Exemplo serie mensal da Incidência de dengue por 100,000hab em uma região das Filipinas de 2008 to 2016. Fonte: Kaggle
dengue <- read.csv("https://raw.githubusercontent.com/ogcruz/dados_eco_2023/main/dados/denguecases2.csv")
head(dengue)
## Month Year Dengue_Cases
## 1 Apr 2008 131.13331
## 2 Aug 2008 159.97741
## 3 Dec 2008 93.65630
## 4 Feb 2008 49.38712
## 5 Jan 2008 79.85915
## 6 Jul 2008 152.63940
Antes de colocando em formato de série temporal utilizando a biblioteca ts do R, precisamos ordenar o dataframe para que possamos transformar corretamente em uma série temporal uma vez que a função baseia-se somente na ordem de entrada.
Assim vamos alterar a coluna Month em um fator para que possamos manter a ordem dos meses e em seguida usar a função order para reordenar todo o dataframe.
dengue$Month <- factor(dengue$Month,levels = month.abb)
dengue <- dengue[order(dengue$Year,dengue$Month),]
head(dengue)
## Month Year Dengue_Cases
## 5 Jan 2008 79.85915
## 4 Feb 2008 49.38712
## 8 Mar 2008 115.13416
## 1 Apr 2008 131.13331
## 9 May 2008 129.20466
## 7 Jun 2008 210.24223
Com o dado na devida ordem e podemos continuar a transformação em série temporal.
# Convertendo os dados para o formato de Séries Temporais
# A frequency=12 foi especificado pois queremos mostrar dos dados mensais
denguets <- ts(dengue$Dengue_Cases,start=c(2008,1),frequency=12)
plot(denguets, ylab="Casos de Dengue", xlab="Tempo")
Verificando e testando a autocorrelação dos casos de dengue.
\[ \begin{aligned} && H_{0}: \rho_{h}=0 \\ && H_{1}: \rho_{h}\neq 0 \end{aligned} \]
acf(denguets, lag.max=20, main="Função de Autocorrelação")
Box.test(denguets, lag=20, type="Ljung-Box")
Box-Ljung test
data: denguets X-squared = 271.51, df = 20, p-value < 2.2e-16
Através do gráfico e do teste do ACF, é possível verificar que a incidência de dengue é correlacionada ao longo do tempo.
Fazendo uma análise descritiva da série temporal
denguets
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2008 79.85915 49.38712 115.13416 131.13331 129.20466 210.24223 152.63940 159.97741 307.65474 58.74152 36.17346 93.65630
2009 87.96879 96.47914 190.36630 98.15255 124.03703 215.76350 40.66555 39.54446 85.84889 70.55726 95.37771 171.74569
2010 81.62430 95.59756 174.13877 33.54686 32.44285 60.04658 55.22568 90.16454 135.63883 74.17619 71.39315 138.44613
2011 33.66412 46.52083 93.34766 58.76998 134.83900 187.12547 109.27259 88.23193 143.89752 53.87635 91.05780 184.88198
2012 114.48472 251.27249 400.20592 162.21779 191.47219 276.13014 75.88479 128.88087 423.70277 239.40052 421.72803 607.49949
2013 244.44260 374.95060 530.46735 75.91858 132.94225 678.00967 387.48040 448.67952 515.58071 303.43820 530.61714 696.56174
2014 56.28797 113.67882 522.16422 249.49254 326.64717 366.61897 237.79033 509.79051 469.48018 41.43502 87.44494 226.41755
2015 134.40762 255.93445 243.46980 212.50300 485.76066 331.08272 33.81837 60.95752 121.16441 104.00878 210.63816 160.61858
2016 201.73756 362.34941 270.55192 18.94775 57.02598 57.41445 70.58666 145.36292 116.41069 119.08265 245.19665 194.46347
Vamos verificar a propriedades da série:
| Estatística | Função R | Valor |
|---|---|---|
| Comprimento da Serie | length() | 108 |
| media | mean() | 192.0458131 |
| mediana | median() | 134.62331 |
| máximo | max() | 696.56174 |
| minimo | min() | 18.947748 |
| amplitude | range() | 18.947748, 696.56174 |
| frequência | frequency() | 12 |
| período de inicio | start() | 2008, 1 |
| período de fim | end() | 2016, 12 |
Pode-se pedir também o sumário da série!
summary(denguets)
Min. 1st Qu. Median Mean 3rd Qu. Max.
18.95 81.18 134.62 192.05 246.27 696.56
hist(denguets,breaks = 10)
boxplot(denguets,col='lightblue')
Mudando a janela de tempo da série temporal: observando apenas os dados de Jan 2010 até Dez de 2012.
denguets2 <- window(denguets, start=c(2010,1),end=c(2012,12),frequency=12)
plot(denguets2, ylab="Casos de Dengue", xlab="Tempo")
Decompondo a série temporal
Decompondo a série temporal dos casos de dengue via método clássico decompose (Decomposição via Médias Móveis):
plot(decompose(denguets))
Decompondo a série temporal dos casos de dengue via STL (Seasonal and Trend decomposition using Loess):
plot(stl(denguets, s.window="periodic"))
decom_dengue <- stl(denguets,12)
head(decom_dengue$time.series)
seasonal trend remainder
Jan 2008 -71.00930 132.7212 18.147256
Feb 2008 -26.81769 132.8553 -56.650467
Mar 2008 81.88596 132.9894 -99.741166
Apr 2008 -65.11369 133.1235 63.123548
May 2008 -22.99327 132.7289 19.468992
Jun 2008 80.32281 132.3344 -2.415003
plot(decom_dengue)
Trend <- decom_dengue$time.series[,2]
Seasonal <- decom_dengue$time.series[,1]
Random <- decom_dengue$time.series[,3]
Refazendo o sinal original da séries temporais através das componentes:
recomposed_dengue <- Trend+Seasonal+Random
par(mfrow=c(1,2))
plot(denguets, ylab="Incidência Dengue", main="Original")
plot(as.ts(recomposed_dengue), ylab="Incidência Dengue", main="Recomposta")
Em algumas séries temporais não é fácil avaliar suas componentes de maneira visual, ou seja, de maneira gráfica. Para podermos avaliar melhor precisamos utilizar alguns testes estatísticos.
Outra forma de fazer gráficos é através das bibliotecas ggplot e ggfortify:
library(ggplot2)
library(ggfortify)
autoplot(denguets)
autoplot(decompose(denguets))
Avaliando a Estacionariedade da série temporal
Segundo o teste de Dickey-Fuller:
\(H_{0}\): A série temporal não é Estacionária
\(H_{1}\): A série temporal é Estacionária
Alguns exemplos:
Testando a estacionariedade da série dos casos de dengue:
library(tseries)
adf.test(denguets)
Augmented Dickey-Fuller Test
data: denguets Dickey-Fuller = -1.9795, Lag order = 4, p-value = 0.5851 alternative hypothesis: stationary
Como p-valor = 0,5851, não rejeitamos a hipótese nula, ou seja, não há indícios da série temporal ser estacionária.
Avaliando a tendência em uma série temporal
Construindo uma reta baseado no modelo de regressão linear simples para verificar a tendência da incidência da dengue:
plot(denguets, main = "Incidência de Dengue 2008 a 2016")
abline(reg=lm(denguets ~ time(denguets)), col = "red")
Construindo uma curva suavizada baseada na função lowess para verificar tendência da incidência da dengue:
plot(denguets, ylab="Casos de Dengue", xlab="Tempo")
library(Kendall)
lines(lowess(time(denguets),denguets),lwd=3, col=2)
Uma outra forma de mostrar a tendência da série temporal é fazendo a média anual. Observe que a curva se parece um pouco com a curva do lowess porém menos suave.
plot(aggregate(denguets, FUN=mean))
Avaliando a Sazonalidade da série temporal
De maneira visual podemos utilizar algumas técnicas gráficas, tais como:
boxplot(denguets ~ cycle(denguets))
monthplot(denguets)
library(forecast)
seasonplot(denguets,col=terrain.colors(6),lwd=2)
Utilizando os bancos:
Série mensal de óbitos por doenças respiratórias na região Sul do Brasil de 1996 a 2017 (pode ser acessado na URL https://bit.ly/obtsul, fonte: DataSUS/MS)
Série semanal do numero de casos Malaria nos EUA de 1974 a 1984 (pode ser acessado na URL https://bit.ly/cdcmal, fonte:CDC/US)
Importe a série para um formato ts e faça:
Uma análise exploratórias dos dados em formato séries temporais;
Decomponha a série temporal;
Através de análises gráficas e/ou testes estatísticos, avalie e verifique a existência de tendência e sazonalidade na série.
Time Series Task View:
https://cran.r-project.org/web/views/TimeSeries.html
Blog, Ebook and Forecast Documentation by Rob Hyndman:
https://otexts.org/fpp2/intro.html
STL: A seasonal-trend decomposition procedure based on loess
Stackoverflow Community:
DIGGLE, Peter. Time Series: A Biostatistical Introduction (Oxford Statistical Science Series, No. 5) 1st Edition, 1996
FERREIRA, Pedro Guilherme Costa. Análise de Séries Temporais em R: curso introdutório. 2018.
METCALFE, Andrew V.; COWPERTWAIT, Paul SP. Introductory time series with R. Springer-Verlag New York, 2009.
MORETTIN, Pedro A.; TOLOI, Clélia M.C. Análise de Séries Temporais: Modelos Lineares Univariados. Bluscher - ABE - Projeto Fisher. Edição 3, 2018.
WOODWARD, Wayne A.; GRAY, Henry L.; ELLIOTT, Alan C. Applied time series analysis with R. CRC press, 2017.